<template>
  <div class="rated">
    <p class="title">最受好评电影</p>
    <!-- 加一个父元素，当作容器 -->
    <div class="wrapper">
      <ul>
        <li v-for="item in ratedList" :key="item._id">
          <div class="wrap">
            <img :src="item.imgUrl" alt="" />
            <div class="bottom" v-if="item.score">
              观众评分 {{ item.score }}
            </div>
            <div class="bottom" v-if="item.wishNum">
              {{ item.wishNum }}人想看
            </div>
          </div>

          <h5>{{ item.title }}</h5>
        </li>
      </ul>
    </div>
  </div>
</template>

<script>
// import http from "@/utils/http";
// import { ratedApi } from "@/utils/api";

// 哪个组件需要滚动，哪个组件去引入
// 添加bs的时机是在数据请求完以后
import BetterScroll from "better-scroll";
import { mapState, mapActions } from "vuex";

export default {
  computed: mapState({
    ratedList: (state) => state.rated.ratedList,
  }),
  // computed: mapState(["ratedList"]),
  // computed: {
  //   ratedList() {
  //     // rated表示的是模块名
  //     return this.$store.state.rated.ratedList;
  //   },
  // },
  // 数据请求放mounted
  async mounted() {
    await this.getRatedListAsync();
    new BetterScroll(".wrapper", {
      startX: 0,
      scrollX: true,
      scrollY: false,
      // 保证元素可以被点击
      click: true,
    });
  },
  methods: {
    // 如果添加了命名空间，需要额外加一个第一个参数是模块名称
    ...mapActions("rated", ["getRatedListAsync"]),
    // async getRatedList() {
    // fetch("http://www.pudge.wang:3080/api/rated/list")
    //   .then((response) => response.json())
    //   .then((res) => {
    //     if (res.status === 0) {
    //       this.ratedList = res.result;
    //     }
    //   });

    // http.get().then((res) => {
    //   this.ratedList = res.result;
    // });

    // const res = await http.get("/rated/list");
    // this.ratedList = res.result;

    // const res = await ratedApi();
    // // 数据改变了
    // this.ratedList = res.result;

    // await this.$nextTick();
    // new BetterScroll(".wrapper", {
    //   startX: 0,
    //   scrollX: true,
    //   scrollY: false,
    //   // 保证元素可以被点击
    //   click: true,
    // });

    // 等待页面渲染结束再执行
    // this.$nextTick(() => {
    //   // 确保数据请求结束
    //   // 第一个参数是容器，第二个参数是配置对象
    //   new BetterScroll(".wrapper", {
    //     startX: 0,
    //     scrollX: true,
    //     scrollY: false,
    //     // 保证元素可以被点击
    //     click: true,
    //   });
    // });
    // },
  },
};
</script>

<style scoped lang="less">
@import "../../../../../assets/css/var.less";
.rated {
  width: 100%;
  height: 205px;
  padding: 12px 15px;
  margin-bottom: 10px;
  background: @white-color;

  .title {
    font-size: 14px;
    color: #333;
    margin: 0 0 12px;
  }

  .wrapper {
    // 溢出部分直接隐藏，不需要滚动条事件了
    overflow: hidden;
  }

  ul {
    height: 150px;
    // 将这个元素转成行内的弹性和
    display: inline-flex;
    // overflow: auto;

    li {
      width: 85px;
      height: 100%;
      flex-shrink: 0;
      margin-right: 10px;

      &:last-child {
        margin: 0;
      }

      .wrap {
        width: 85px;
        height: 115px;
        position: relative;

        img {
          width: 100%;
          height: 100%;
        }

        .bottom {
          width: 100%;
          height: 30px;
          background: linear-gradient(
            to bottom,
            rgba(0, 0, 0, 0),
            rgba(0, 0, 0, 1)
          );
          position: absolute;
          left: 0;
          bottom: 0;
          font-size: @xs-font;
          display: flex;
          flex-direction: column-reverse;
          color: @score-color;
          font-weight: 900;
        }
      }

      h5 {
        margin-top: 7px;
        font-size: @s-font;
        .ell();
      }
    }
  }
}
</style>
